package model

import "github.com/jinzhu/gorm"

type Author struct {
	gorm.Model
	/*
		ID        uint `gorm:"primary_key"`
		CreatedAt time.Time
		UpdatedAt time.Time
		DeletedAt *time.Time `sql:"index"`
	*/
	Name string `gorm:"column:name;not null" json:"name"`
	//通过作者找文章 创建关联字段  这个是orm层面的属性 不是数据库的字段
	Articles []Article `gorm:"foreignkey:AuthorId"`
}

type Article struct {
	gorm.Model
	Title    string `json:"title"`
	AuthorId uint
	//通过文章找作者  创建关联字段
	Author Author        `gorm:"foreignkey:AuthorId"`
	Types  []ArticleType `gorm:"many2many:articletypemap"`
}

type ArticleType struct {
	ID       uint64 `gorm:"column:id;primary_key;auto_increment" json:"id"`
	TypeName string
	Articles []Article `gorm:"many2many:articletypemap"`
}

//手动添加记录的时候 不要添加删除时间
//不然测试的时候 就不会返回这些数据了

// 通过传入的作者查询文章
func (a *Author) GetArticle() error {
	return DB.Self.Preload("Articles").First(&a).Error
}

// 通过文章找作者
func (a *Article) GetAuthor() error {
	return DB.Self.Preload("Author").First(&a).Error
}

// 通过类型找文章
func (a *ArticleType) GetArticle() error {
	return DB.Self.Preload("Articles").First(&a).Error
}

// 通过文章找类型
func (a *Article) GetArticleType() error {
	return DB.Self.Preload("Types").First(&a).Error
}
